package com.sen.organization.vo;

import lombok.Data;

import java.io.Serializable;
import java.util.Objects;
import java.util.Set;

@Data
public class MemberDepartmentVo implements Serializable,Comparable {
    /** 部门代码（唯一自动生成）;部门代码（唯一自动生成） */
    private String code ;
    /** 部门编码（用户填写）;部门编码（用户填写） */
    private String departmentNumber ;
    /** 上级部门编码;上级部门编码 */
    private String parentCode ;
    /** 部门名称;部门名称 */
    private String departmentName ;
    /** 部门简称;部门简称 */
    private String departmentAbbr ;
    /** 排序号;排序号 */
    private Integer sort ;
    /** 办公电话;办公电话 */
    private String officePhone ;
    /** 邮政编码;邮政编码 */
    private String postCode ;
    /** 传真;传真 */
    private String faxt ;
    /** 通讯地址;通讯地址 */
    private String mailAddress ;
    /** 描述;描述 */
    private String description ;
    /** 主题编码;主体编码 */
    private String entityCode ;

    private String id;

    private String name;

    private String parentDepartment;

    /**
     * 子节点
     */
    private Set<MemberDepartmentVo> children ;


    @Override
    public int compareTo(Object o) {
        MemberDepartmentVo o1 = (MemberDepartmentVo) o;
        if (this.getSort().intValue() == o1.getSort().intValue()){
            return this.hashCode() - o.hashCode();
        }
        return this.getSort() - o1.getSort();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MemberDepartmentVo that = (MemberDepartmentVo) o;
        return code.equals(that.code);
    }

    @Override
    public int hashCode() {
        return Objects.hash(code);
    }


}
